﻿#define _CRT_SECURE_NO_WARNINGS 1
//#include <iostream>
//using namespace std;
//
//class You {
//public:
//	int anxiety = 10;
//	int confidence = 2;
//	
//
//	void LearnOneThing() {
//		cout << "学了一个C++知识点(自信+2)" << endl;
//		confidence += 2;
//		anxiety -= 1;
//	}
//
//	void BuildOneProject() {
//		cout << "完成了一个小项目(自信+3)" << endl;
//		confidence += 2;
//		anxiety -= 3;
//	}
//
//	void KeepGoing() {
//		while (anxiety > 0) {
//			int choice;
//			cout << "当前状态：焦虑值=" << anxiety << "  自信值=" << confidence << endl;
//			cout << "选择行动：1.学习 2.做项目 3.休息（输入数字）";
//			cin >> choice;
//
//			if (1 == choice)
//				LearnOneThing();
//			else if (2 == choice)
//				BuildOneProject();
//			else
//			{
//				cout << "休息了一会，焦虑值-1" << endl;
//				anxiety -= 1;
//			}
//			if (anxiety < 0)
//				anxiety = 0;
//		}
//		cout << "恭喜！焦虑值已经归零，你准备好征服C++世界了" << endl;
//	}
//};
//
//int main()
//{
//	You you;
//	you.KeepGoing();
//	return 0;
//}


//#include <windows.h>
//#include <iostream>
//#include <vector>
//#include <cstdlib>
//#include <ctime>
//#include <conio.h>
//
//using namespace std;
//
//// 玫瑰字符画库
//const vector<string> ROSES = {
//    R"(
//       @
//      @@@
//     @@@@@
//    @@@@@@@
//   @@@@@@@@@
//  @@@@@@@@@@@
//     | | |
//    )",
//    R"(
//      / \
//     /   \
//    /     \
//   /  ♥   \
//  /_______\
//     | |
//    )",
//    R"(
//      \ /
//       @
//      / \
//     /   \
//    /     \
//   /       \
//  /_________\
//    )"
//};
//
//// ANSI颜色代码
//const vector<string> COLORS = {
//    "\x1B[91m",  // 亮红色
//    "\x1B[95m",  // 亮紫色
//    "\x1B[93m",  // 亮黄色
//    "\x1B[96m"   // 亮青色
//};
//const string RESET = "\x1B[0m";
//
//// 设置控制台光标位置（Windows API）
//void setCursorPosition(int x, int y) {
//    COORD coord;
//    coord.X = x;
//    coord.Y = y;
//    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
//}
//
//// 清屏函数
//void clearScreen() {
//    system("cls");
//}
//
//// 打印带颜色的玫瑰
//void printRose(int x, int y, const string& color) {
//    setCursorPosition(x, y);
//    cout << color << ROSES[rand() % ROSES.size()] << RESET;
//}
//
//int main() {
//    srand(static_cast<unsigned>(time(nullptr)));
//
//    // 启用ANSI转义码支持（Windows 10+）
//    HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
//    DWORD dwMode = 0;
//    GetConsoleMode(hOut, &dwMode);
//    dwMode |= ENABLE_VIRTUAL_TERMINAL_PROCESSING;
//    SetConsoleMode(hOut, dwMode);
//
//    try {
//        while (!_kbhit()) {  // 按任意键退出
//            clearScreen();
//            for (int i = 0; i < 20; ++i) {  // 同时飘动的玫瑰数量
//                int x = rand() % 50 + 1;
//                int y = rand() % 20 + 1;
//                string color = COLORS[rand() % COLORS.size()];
//                printRose(x, y, color);
//            }
//            Sleep(500);  // 500毫秒刷新一次
//        }
//    }
//    catch (...) {
//        // 异常处理
//    }
//
//    cout << "\n希望你的心情像玫瑰一样绽放！ 🌹" << endl;
//    return 0;
//}


#include <iostream>
#include <conio.h>
#include <windows.h>
#include <vector>
#include <cstdlib>
#include <ctime>

using namespace std;

const int WIDTH = 40;
const int HEIGHT = 20;

// 玩家飞机
struct Player {
    int x, y;
    Player() : x(WIDTH / 2), y(HEIGHT - 2) {}
};

// 敌机
struct Enemy {
    int x, y;
    Enemy(int x) : x(x), y(0) {}
};

// 子弹
struct Bullet {
    int x, y;
    Bullet(int x, int y) : x(x), y(y) {}
};

Player player;
vector<Enemy> enemies;
vector<Bullet> bullets;

// 初始化游戏
void initGame() {
    srand(time(0));
    enemies.clear();
    bullets.clear();
}

// 绘制游戏界面
void draw() {
    system("cls"); // 清屏

    // 绘制玩家飞机
    for (int i = 0; i < 3; ++i) {
        COORD coord = { (SHORT)player.x, (SHORT)(player.y - i) };
        SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
        cout << "^";
    }

    // 绘制敌机
    for (const auto& enemy : enemies) {
        COORD coord = { (SHORT)enemy.x, (SHORT)enemy.y };
        SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
        cout << "v";
    }

    // 绘制子弹
    for (const auto& bullet : bullets) {
        COORD coord = { (SHORT)bullet.x, (SHORT)bullet.y };
        SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
        cout << "*";
    }
}

// 更新游戏状态
void update() {
    // 更新子弹位置
    for (auto it = bullets.begin(); it != bullets.end();) {
        if (it->y > 0) {
            it->y--;
            ++it;
        }
        else {
            it = bullets.erase(it);
        }
    }

    // 更新敌机位置
    for (auto it = enemies.begin(); it != enemies.end();) {
        if (it->y < HEIGHT - 1) {
            it->y++;
            ++it;
        }
        else {
            it = enemies.erase(it);
        }
    }

    // 随机生成敌机
    if (rand() % 10 == 0) {
        enemies.emplace_back(rand() % (WIDTH - 2) + 1);
    }

    // 检测碰撞
    for (auto& bullet : bullets) {
        for (auto& enemy : enemies) {
            if (bullet.x == enemy.x && bullet.y == enemy.y) {
                bullets.erase(bullets.begin() + (&bullet - &bullets[0]));
                enemies.erase(enemies.begin() + (&enemy - &enemies[0]));
                break;
            }
        }
    }
}

// 处理输入
void input() {
    if (_kbhit()) {
        char ch = _getch();
        switch (ch) {
        case 'a':
            if (player.x > 0) player.x--;
            break;
        case 'd':
            if (player.x < WIDTH - 1) player.x++;
            break;
        case ' ':
            bullets.emplace_back(player.x, player.y - 1);
            break;
        }
    }
}

int main() {
    initGame();
    while (true) {
        draw();
        input();
        update();
        Sleep(100); // 控制游戏速度
    }
    return 0;
}